sandy bridge

更新时间:2023-04-14 14:58

2009年(TICK时间),Intel处理器制程迈入32nm时代,2010年的TOCK时间,Intel推出代号为Sandy Bridge的处理器,该处理器采用32nm制程。Sandy Bridge(之前称作Gesher)是Nehalem的继任者,也是其工艺升级版,从45nm进化到32nm。Sandy Bridge将有八核心版本,二级缓存仍为512KB,但三级缓存将扩容至16MB。而Sandy Bridge最主要特点则是加入了game instrution AVX(Advanced Vectors Extensions)技术,也就是之前的VSSEintel宣称,使用AVX技术进行矩阵计算的时候将比SSE技术快90%。其重要性堪比1999年Pentium III引入SSE。

特性

1.更宽的矢量运算:从128-bit增至256-bit,并保持向下兼容性

2.增强的数据重排单个操作可同时处理8个32-bit数据

3.支持三操作数和四操作数,非破坏性句法

4.支持弹性的访存地址不对齐

5.可扩展的新操作码(VEX)

6.更强的集成显示核心

解析

前端

从高级层面角度看,SNB架构只是一次进化,但是如果看看Nehalem/Westmere以来晶体管变化的规模,绝对是一次革命。 Core 2引入了一种叫作循环流检测器(LSD)的逻辑块,检测到CPU执行软件循环的时候就会关闭分支预测器、预取/解码引擎,然后通过自身缓存的微指令(micro-ops)供给执行单元。这种做法通过在循环执行的时候关闭前端节省了功耗,并改进了性能。

SNB里又增加了一个微指令缓存,用于在指令解码时临时存放。这里没有什么严格的算法,指令只要在解码就会放入缓存。预取硬件获得一个新指令的时候,会首先检查它是否存在于微指令缓存中,如是则由缓存为其余的管线服务,前端随之关闭。解码硬件是x86管线里非常复杂的部分,关闭它能够节约大量的功耗。如果这种技术也能引入到Atom处理器架构中,无疑也能使之受益匪浅。

这个缓存是直接映射的,能存储大约1.5K微指令,相当于6KB指令缓存。它位于一级指令缓存内,大多数程序的命中率都能达到80%左右,而且带宽也相比一级指令缓存更高、更稳定。真正的一级指令和数据缓存并没有变,仍然都是32KB,合计64KB。

这看起来有点儿像Pentium 4追踪缓存,但最大的不同是它并不缓存追踪,而更像是一个指令缓存,存储的是微指令,而非x86指令(macro-ops)。

与此同时,Intel还完全重新了一个分支预测单元(BPU),精确度更高,并在三个方面进行了创新。

第一,标准的BPU都是2-bit预测器,每个分支都使用相关可信度(强/弱)进行标记。Intel发现,这种双模预测器所预测的分支几乎都是强可信度的,因此SNB里多个分支都使用一个可信度位,而不是每个分支对应一个可信度位,结果就是在分支历史表中同样的位可以对应更多分支,进而提高预测精确度。

第二,分支目标同样做了翻新。之前的架构中分支目标的大小都是固定的,但是大多数目标都是相对近似的。SNB现在支持多个不同的分支目标大小,而不是一味扩大寻址能力、保存所有分支目标,因而浪费的空间更少,CPU能够跟踪更多目标、加快预测速度。

第三,提高分支预测器精度的传统方法是使用更多的历史位,但这只对要求长指令的特定类型分支有效,SNB于是将分支按照长短不同历史进行划分,从而提高预测精度

物理寄存器文件(PRF)和执行改进

类似于AMD推土机、山猫,IntelSNB也使用了物理寄存器文件。Core 2、Nehalem架构中,每个微指令需要的每个操作数都有一份拷贝,这就意味着乱序执行硬件(调度器/重排序缓存/关联队列)必须要非常大,以便容纳微指令和相关数据。Core Duo时代是80-bit,加入SSE指令集后增至128-bit,现在又有了AVX指令集,按照趋势会翻番至256-bit。

RPF寄存器文件中存储微指令操作数,而微指令在乱序执行引擎中只会携带指向操作数的指针,而非数据本身。这就大大降低了乱序执行硬件的功耗(转移大量数据很费电的),同时也减小了流水线的核心面积,数据流窗口也增大了三分之一。

核心面积的精简正是AVX指令(SNB最主要革新之一)集得以实现并保证良好性能的关键所在。以最小的核心面积代价,Intel将所有SIMD单元都转向了256-bit。

AVX支持256-bit操作数,相当消耗晶体管与核心面积,而RPF的使用加大了乱序执行缓冲,能够很好地满足更高吞吐量的浮点引擎。

Nehalem架构中有三个执行端口和三个执行单元堆栈:

SNB允许256-bit AVX指令借用128-bit的整数SIMD数据路径,这就使用最小的核心面积实现了双倍的浮点吞吐量,每个时钟可以进行两个256-bit AVX操作。另外执行硬件和路径的上位128-bit是受电源栅极(Power Gate)控制的,标准128-bit SSE操作不会因为256-bit扩展而增加功耗。

AMD推土机架构对AVX的支持则有所不同,使用了两个128-bit SSE路径来合并成256-bit AVX操作,即使八核心(四模块)推土机的256-bit AVX吞吐量也要比四核心SNB少一半,不过实际影响完全取决于应用程序如何利用AVX。SNB的峰值浮点性能翻了一番,这就对载入和存储单元提出了更高要求。Nehalem/Westmere架构中有三个载入和存储端口:载入、存储地址、存储数据

SNB架构中载入和存储地址端口是对称的,都可以执行载入或者存储地址,载入带宽因此翻倍。 SNB的整数执行也有了改进,只是比较有限。ADC指令吞吐量翻番,乘法运算可加速25%。

环形总线与三级缓存

Nehalem/Westmere每个核心都与三级缓存单独相连,都需要大约1000条连线,而这种做法的缺点是如果频繁访问三级缓存,效果可能不会太好。

SNB又整合了GPU图形核心、视频转码引擎,并共享三级缓存。Intel并没有沿用此前的做法,再增加2000条连线,而是像服务器版的Nehalem-EX、Westmere-EX那样,引入了环形总线(Ring Bus),每个核心、每一块三级缓存(LLC)、集成图形核心、媒体引擎、系统助手(System Agent)都在这条线上拥有自己的接入点,形象地说就是个“站台”。

这条环形总线由四条独立的环组成,分别是数据环(DT)、请求环(QT)、响应环(RSP)、侦听环(SNP)。每条环的每个站台在每个时钟周期内都能接受32字节数据,而且环的访问总会自动选择最短的路径,以缩短延迟。随着核心数量、缓存容量的增多,缓存带宽也随时同步增加,因而能够很好地扩展到更多核心、更大服务器集群

这样,SNB每个核心的三级缓存带宽都是96GB/s,堪比高端Westmere,而四核心系统更是能达到384GB/s,因为每个核心都在环上有一个接入点。

三级缓存的延迟也从大约36个周期减少到26-31个周期。此前预览的时候我们就已经感觉到了这一点,现在终于有了确切的数字。三级缓存现在被划分成多个区块,分别对应一个CPU核心,都在环形总线上有自己的接入点和完整缓存管线。每个核心都可以访问全部三级缓存,只是延迟不同。此前三级缓存只有一条缓存管线,所有核心的请求都必须通过它,现在很大程度上分而治之了。

和以前不同的是,三级缓存的频率现在也和核心频率同步,因而速度更快,不过缺点是三级缓存也会随着核心而降频,所以如果CPU降频的时候GPU又正好需要访问三级缓存,速度就慢下来了。

系统助手

经过环形总线、三级缓存的变化,非核心(Uncore)概念还在,但是Intel改称之为系统助手,基本就相当于曾经的北桥芯片:

PCI-E控制器,可提供16条PCI-E 2.0信道,支持单条PCI-E x16或者两条PCI-E x8插槽

重新设计的双通道DDR3内存控制器内存延迟也恢复了正常水平(Westmere将内存控制器移出CPU、放到了GPU上)

此外还有DMI总线接口、显示引擎、电源控制单元(PCU)。

系统助手的频率要低于其他部分,有自己独立的电源层。

整合图形核心

SNB将CPU、GPU封装在同一内核中,全部采用32nm工艺,特别是显著提高了IPC(指令/时钟)。

SNB GPU有自己的电源岛和时钟域,也支持Turbo Boost技术,可以独立加速或降频,并共享三级缓存。显卡驱动会控制访问三级缓存的权限,甚至可以限制GPU使用多少缓存。将图形数据放在缓存里就不用绕道去遥远而“缓慢”的内存了,这对提升性能、降低功耗都大有裨益。

不过这么做并没有说起来这么简单。NVIDIA GF100核心费了九牛二虎之力,SNB其实也差不多,同样进行了全新设计。

顺便提一下Intel的独立显卡工程Larrabee。它的重点是广泛使用全面可编程硬件(除了纹理硬件),SNB则是全面使用固定功能硬件,功能特性和硬件单元相对应,这样的好处是性能、功耗、核心面积都大大优化,损失则是缺乏弹性。显然,Intel世界的中心仍旧是CPU,不能让GPU过分强大,这和NVIDIA的理念正好相反。

可编程着色硬件被称为EU,包含着色器、核心、执行单元等,可以从多个线程双发射时取指令。内部ISA映射和绝大多数DX10 API指令一一对应,架构很像CISC,结果就是有效扩大了EU的宽度,IPC也显著提升。

抽象数学运算由EU内的硬件负责,性能得以同步提高。Intel表示,正弦(sine)、余弦(cosine)操作的速度比现在的HD Graphics提升了几个数量级

Intel此前的图形架构中,寄存器文件都是即时重新分配的。如果一个线程需要的寄存器较少,剩余寄存器就会分配给其他线程。这样虽能节省核心面积,但也会限制性能,很多时候线程可能会面临没有寄存器可用的尴尬。在芯片组集成时代,每个线程平均64个寄存器,Westmere HD Graphics提高到平均80个,SNB则每个线程固定为120个。

所有这些改进加起来,SNB里每个EU的指令吞吐量都比现在的HD Graphics增加了一倍。

SNB集成的GPU图形核心分为两大版本,分别拥有6个、12个EU。首批发布的移动版全部是12个EU,桌面版则根据型号不同而有两种配置,可能是高端12个、低端6个。得益于每个EU吞吐量翻番、运行频率更高、共享三级缓存等特点,即使只有六个的时候性能也会相当令人满意。SNB GPU图形核心也可以独立动态加速,最高可达惊人的1.35GHz。如果软件需要更多CPU资源,那么CPU就会加速、GPU同时减速,反之亦然。

媒体引擎

除了GPU图形核心,SNB中还有一个媒体处理器,专门负责视频解码、编码。

新的硬件加速解码引擎中,整个视频管线都通过固定功能单元进行解码,和现在正好相反。Intel据此宣称,SNB在播放视频的时候功耗可降低一半。

新一代Turbo Boost

Lynnfield Core i7/i5首次引入了智能动态加速技术“Turbo Boost”(睿频),能够根据工作负载,自动以适当速度开启全部核心,或者关闭部分限制核心、提高剩余核心的速度,比如一颗热设计功耗(TDP)为95W的四核心处理器,可能会三个核心完全关闭,最后一个大幅提速,一直达到95W TDP的限制。

现有处理器都是假设一旦开启动态加速,就会达到TDP限制,但事实上并非如此,处理器不会立即变得很热,而是有一段时间发热量距离TDP还差很多。

SNB利用这一点特性,允许单元控制单元(PCU)在短时间内将活跃核心加速到TDP以上,然后慢慢降下来。PCU会在空闲时跟踪散热剩余空间,在系统负载加大时予以利用。处理器空闲的时间越长,能够超越TDP的时间就越长,但最长不超过25秒钟。

不过在稳定性方面,PCU不会允许超过任何限制。

命名

SNB家族仍然沿用Core i7/i5/i3的品牌+子系列命名方式,编号上则采用四位数字。

对于桌面版的CPU来说:其中第一位均为“2”,代表第二代Core ix系列,最后末尾往往还有一个代表不同含义的字母:K代表不锁定倍频,都是高端产品;S代表性能优化,原始频率比没有字母后缀的低很多,但是单核心加速最高频率基本相同,另外热设计功耗都是65W;T代表功耗优化,热设计功耗只有45W或35W,但是频率也是最低的。

对于移动版的CPU来说,其型号命名规则如下:

-29xxXM:Core i7,四核心,八线程,支持Turbo,8MB三级缓存至尊版

-28xxQM:Core i7,四核心,八线程,支持Turbo,8MB三级缓存

-27xxQM:Core i7,四核心,八线程,支持Turbo,6MB三级缓存

-26xxM:Core i7,双核心四线程,支持Turbo,4MB三级缓存

-25xxM:Core i5,双核心,四线程,支持Turbo,3MB三级缓存

其后缀的意义为:

-XM:四核心至尊版,不锁倍频

- QM:四核心标准版

-M:双核心标准版 由此可见,Core i7/i5/i3及其各个子系列的不同依然取决于是否支持超线程睿频加速,以及三级缓存容量的大小,还是略有混乱。

规格

漏洞

1) SNB缺陷门事件说明

美国时间2011年1月31日,英特尔官方宣布,2011年1月初面市的SNB平台芯片组设计缺陷,全球暂停出货。经证实,问题出在SNB搭配的主板芯片组(HM65/HM67)集成的SATA设备控制器(用来连接SATA接口的硬盘、光驱等)。

英特尔称,缺陷芯片组3年间出现SATA接口故障的几率只有5%左右。英特尔已经修正了这个设计上的疏漏,并表示现在开始生产的新版本芯片组将不存在这一问题。

2) SNB缺陷门的影响

SNB搭配的芯片组(HM65/HM67)共提供了2个SATA3代端口和4个SATA2代端口。受影响的只是SATA2代端口,端口编号为2、3、4、5。具体症状是:随着使用时间的延长,出现数据错误的几率提高,极端情况下可能造成所连接的设备无法被系统识别

考虑到大部分笔记本电脑只使用了两个SATA装置(1块硬盘和1个光驱),所以它们很可能连接在不受影响的0、1端口上。

3)SNB漏洞解决

在2月微星公布漏洞后,INTEL发布了全线召回的决定,所有已上市产品均可通过官方进行召回。官方预计此次因召回造成的亏损大概在10亿美元左右。3月初,缺陷解决的新的6系列芯片组上市,该批围采用B3步进,也就是修正过SATAII接口缺陷的主板,现已全面销售。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}